package com.dragon.codefx.constant;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * 前端默认值
 * @author lsc
 * @since 2024/12/23 12:02
 **/
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public enum FrontDefaultEnum {
    // 字符串类型
    VARCHAR("string", "''"),
    CHAR("string", "''"),
    TEXT("string", "''"),
    LONGTEXT("string", "''"),
    TINYTEXT("string", "''"),

    // 数值类型
    INT("number", "0"),
    BIGINT("number", "0"),
    SMALLINT("number", "0"),
    TINYINT("number", "0"),
    MEDIUMINT("number", "0"),
    DECIMAL("number", "0"),
    NUMERIC("number", "0"),
    FLOAT("number", "0"),
    DOUBLE("number", "0"),

    // 布尔类型
    BOOLEAN("boolean", "false"),
    BOOL("boolean", "false"),

    // 日期和时间类型
    DATE("string", "''"),
    DATETIME("string", "''"),
    TIMESTAMP("string", "''"),
    TIME("string", "''"),
    YEAR("number", "0"),

    // 二进制类型
    BINARY("string", "''"),
    VARBINARY("string", "''"),
    BLOB("string", "''"),
    MEDIUMBLOB("string", "''"),
    LONGBLOB("string", "''"),

    // JSON 类型（MySQL 和 PostgreSQL 支持）
    JSON("string", "''"),
    JSONB("string", "''"),

    // UUID 类型
    UUID("string", "''"),

    // 二进制数据
    BYTEA("string", "''"),

    // 枚举类型
    ENUM("string", "''"),

    // 其他
    SERIAL("number", "0"),
    BIGSERIAL("number", "0");;
    private String fieldType;
    private String defaultValue;

    public static String getDefaultValue(String fieldType) {
        for (FrontDefaultEnum frontDefaultEnum : FrontDefaultEnum.values()) {
            if (frontDefaultEnum.fieldType.equals(fieldType)) {
                return frontDefaultEnum.defaultValue;
            }
        }
        return "";
    }
}
